package com.wing.res.model.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.wing.device.model.entity.DeviceModel;
import com.wing.product.model.entity.ProductType;
import com.wing.res.model.response.DeviceOrWorkVo;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 产品工艺路线参数表
 * @version 1.1.0
 * @Author hz
 * @Date 2024-09-23 21:22
 **/
@Builder
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("res_benchmark_book_echnology")
public class ResBenchmarkBookEchnology {


    /**
     * ID
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @TableId(type = IdType.AUTO)
    public Long id;

    /**
     * 版本号
     */
    @Version
    @JsonIgnore
    protected Long version;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    protected LocalDateTime createTime;

    /**
     * 创建者ID
     */
    private Long creator;

    /**
     * 创建者名称
     */
    private String creatorName;

    /**
     * 修改时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonIgnore
    protected LocalDateTime updateTime;

    /**
     * 修改者
     */
    protected Long modifier;

    /**
     * 修改者名称
     */
    private String modifierName;

    /**
     * 是否已删除
     */
    protected Boolean isDeleted;

    /**
     * 备注
     */
    protected String remark;

    /**
     * 基准书id
     */
    private Long bookId;

    /**
     * 工艺编号
     */
    private String code;

    /**
     * 工序名称
     */
    private String name;

    /**
     * 物料好
     */
    private String skuCode;

    /**
     * 排序
     */
    private Integer sorted;

    /**
     * 工序内容平
     */
    private String content;

    /**
     * 质检参数
     */
    private String qualityParam;

    /**
     * 夹具
     */
    private String fixture;

    /**
     * 量具
     */
    private String measuringTools;

    /**
     * 工时定额(分钟)
     */
    private BigDecimal hoursQuota;

    /**
     * 工资定额(金额)
     */
    private BigDecimal salaryQuota;

    /**
     * 报工单位
     */
    private String unitId;

    /**
     * NG工资定额
     */
    private BigDecimal ngSalaryQuota;

    /**
     * 质检类型 0.不需要质检 1.抽检 2.全检
     */
    private String qualityType;

    /**
     * 半成品id
     */
    private Long semiFinishedId;

    /**
     * 半成品名称
     */
    private String semiFinishedName;

    /**
     * 半成品code
     */
    private String semiFinishedCode;

    /**
     * 工种/机型
     */
    private String deviceType;

    /**
     * 报废工资定额
     */
    private String bfSalaryQuota;

    /**
     * 工位性质 1.设备工位 2.人工工位
     */
    private String workstationNature;

    /**
     * 工位性质名称
     */
    @TableField(exist = false)
    private String workstationNatureName;

    /**
     * 设备类型名称
     */
    @TableField(exist = false)
    private String deviceTypeName;

    /**
     * 工序类型 0.首工序 1.过程工序 2末工序
     */
    private String type;

    /**
     * 工序类型 0.首工序 1.过程工序 2末工序（别名）
     */
    @TableField(exist = false)
    private String processType;

    @TableField(exist = false)
    private String typeName;

    /**
     * sku列表
     */
    @TableField(exist = false)
    private List<ResBenchmarkBookEchnologySku> skuList;

    /**
     * 工序成品质检项
     */
    @TableField(exist = false)
    private List<ResBenchmarkBookEchnologyQuality> qualityList;


    @TableField(exist = false)
    private List<DeviceOrWorkVo> deviceTypeList;


    private String qualityNature;

    /**
     * 1.一物一检
     * 2.普通检测
     */
    private String qualityAttributes;

    @TableField(exist = false)
    private String qualityNatureName;


    /**
     * 人员工种
     */
    private Long personnelWorkType;

    /**
     * 工序号
     */
    private Integer processNumber;

    /**
     * 关联工艺工序库id
     */
    private Long associationGxId;

}
